#pragma once

#ifndef _OGL_IRENDERABLE_OBJECT
#define _OGL_IRENDERABLE_OBJECT

#include "OGLGlobals.h"
#include "OGLObjectData.h"
#include "OGLGeometryData.h"

#include <string>

class OGLIRenderableObject
{
private :

public :
	// These pointers must only be deleted by derived class' destructor.
	OGLDataObject *objData;
	OGLGeometryData *geomData;

	virtual ~OGLIRenderableObject(void) {};

	virtual OGLResult LoadModel(std::string filePath) = 0;
	virtual OGLResult Render(GLuint activeVAO, GLuint activeProgram) = 0; 
	virtual OGLResult Cleanup(void) = 0;
};

#endif